122 lines
2.8 KiB
Zig
122 lines
2.8 KiB
Zig
const std = @import("std");
|
|
var data : [4][1024]u32 = undefined;
|
|
var res:u32=0;
|
|
var res2:u32=0;
|
|
|
|
pub fn main() !void {
|
|
_ = try readFile();
|
|
std.debug.print("{},{}\n",.{data[0][0],data[1][0]});
|
|
|
|
for(&data[0],0..) | *elema,indexa |
|
|
{
|
|
const slice = data[0][indexa+1..];
|
|
for(slice) |*elemb|
|
|
{
|
|
if(elemb.* < elema.*)
|
|
{
|
|
const temp = elema.*;
|
|
elema.* = elemb.*;
|
|
elemb.* = temp;
|
|
}
|
|
}
|
|
}
|
|
for(&data[1],0..) | *elema,indexa |
|
|
{
|
|
const slice = data[1][indexa+1..];
|
|
for(slice) |*elemb|
|
|
{
|
|
if(elemb.* < elema.*)
|
|
{
|
|
const temp = elema.*;
|
|
elema.* = elemb.*;
|
|
elemb.* = temp;
|
|
}
|
|
}
|
|
}
|
|
|
|
for(&data[0],&data[1],&data[2],&data[3]) | a, b, *c, *d |
|
|
{
|
|
d.* = 0;
|
|
if(a < b)
|
|
{
|
|
c.* = b-a;
|
|
}
|
|
else if (a > b)
|
|
{
|
|
c.* = a-b;
|
|
}
|
|
}
|
|
for(&data[0]) | a |
|
|
{
|
|
|
|
for(&data[1], &data[3]) | b, *c |
|
|
{
|
|
//std.debug.print("a:{} ,b:{}\n",.{a,b});
|
|
if(a == b and a != 0)
|
|
{
|
|
c.* = a;
|
|
std.debug.print("c:{}, a:{}\n",.{c.*,a});
|
|
}
|
|
}
|
|
}
|
|
for(&data[3]) | count |
|
|
{
|
|
res2 = res2 + count;
|
|
}
|
|
|
|
for(&data[2]) | a |
|
|
{
|
|
res = res + a;
|
|
}
|
|
std.debug.print("res: {}\n",.{res});
|
|
std.debug.print("res2: {}\n",.{res2});
|
|
std.debug.print("ex: {} {} {}",.{data[0][1],data[1][1],data[3][1]});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
fn readFile() !void
|
|
{
|
|
const file = try std.fs.cwd().openFile("input.txt",.{});
|
|
defer file.close();
|
|
|
|
var buf_reader = std.io.bufferedReader(file.reader());
|
|
var in_stream = buf_reader.reader();
|
|
|
|
var buf: [1024]u8 = undefined;
|
|
var index : u32 = 0;
|
|
var indexa: u32 = 0;
|
|
var indexb : u32 = 0;
|
|
|
|
while(try in_stream.readUntilDelimiterOrEof(&buf,'\n')) | line |
|
|
{
|
|
var it = std.mem.split(u8,line," ");
|
|
|
|
while (it.next()) |word|
|
|
{
|
|
if(std.mem.eql(u8,word,"\n")==false)
|
|
{
|
|
if(std.mem.eql(u8,word,"")==false)
|
|
{
|
|
//std.debug.print("entry:{s}\n", .{word});
|
|
if(@mod(index,2)==0)
|
|
{
|
|
data[0][indexa] = try std.fmt.parseInt(u32,word,10);
|
|
indexa +=1;
|
|
}
|
|
else
|
|
{
|
|
data[1][indexb] = try std.fmt.parseInt(u32,word,10);
|
|
indexb += 1;
|
|
}
|
|
index += 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|