# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
962973 |
2024-04-14T10:22:22 Z |
n3rm1n |
Robots (IOI13_robots) |
C++17 |
|
125 ms |
12912 KB |
#include<bits/stdc++.h>
#include"robots.h"
using namespace std;
const int MAXN = 1e6 + 10;
int a, b, t, x[MAXN], y[MAXN], s[MAXN], w[MAXN];
bool check(int xt)
{
int index = 0;
for (int i = 0; i < a; ++ i)
{
if(index == t)return true;
int put = 0;
while(index < t && put < xt && w[index] < x[i])
{
index ++;
put ++;
}
}
return (index == t);
}
int taken[55];
int putted[55];
int is[55][55];
int putaway(int A,int B,int T, int X[],int Y[],int W[],int S[])
{
/// 14p
if(A + B == 2 && T == 2)
{
int fit00 = 0, fit01 = 0, fit10 = 0, fit11 = 0;
if(A == 2)
{
if(W[0] < X[0])fit00 ++;
if(W[1] < X[0])fit01 ++;
if(W[0] < X[1])fit10 ++;
if(W[1] < X[1])fit11 ++;
}
else if(B == 2)
{
if(S[0] < Y[0])fit00 ++;
if(S[1] < Y[0])fit01 ++;
if(S[0] < Y[1])fit10 ++;
if(S[1] < Y[1])fit11 ++;
}
else
{
if(W[0] < X[0])fit00 ++;
if(W[1] < X[0])fit01 ++;
if(S[0] < Y[0])fit10 ++;
if(S[1] < Y[0])fit11 ++;
}
if(!fit01 && !fit11)return -1;
if(!fit00 && !fit10)return -1;
if(fit01 && fit10)return 1;
if(fit00 && fit11)return 1;
return 2;
}
/// sort + make global
for (int i = 0; i < T; ++ i)
{
s[i] = S[i];
w[i] = W[i];
}
for (int i = 0; i < A; ++ i)
x[i] = X[i];
for (int i = 0; i < B; ++ i)
y[i] = Y[i];
a = A;
b = B;
t = T;
if(B == 0)
{
sort(x, x+a);
sort(w, w+T);
if(X[A-1] <= W[T-1])return -1;
int l = 1, r = t, mid = 0, ans = t;
while(l <= r)
{
mid = (l + r)/2;
if(check(mid))
{
ans = mid;
r = mid - 1;
}
else l = mid + 1;
}
return ans;
}
for (int i = 0; i < a; ++ i)
{
for (int j = 0; j < t; ++ j)
{
if(w[j] < x[i])
{
is[i][j] = 1;
putted[j] ++;
taken[i] ++;
}
}
}
for (int i = 0; i < b; ++ i)
{
for (int j = 0; j < t; ++ j)
{
if(s[j] < y[i])
{
is[i+a][j] = 1;
putted[j] ++;
taken[i+a] ++;
}
}
}
int all = 0;
for(int i = 0; i < t; ++ i)
{
if(!putted[i])return -1;
all += putted[i];
}
while(all > t)
{
int maxx = 0, maxi = 0, maxj = 0;
for (int i = 0; i < a+b; ++ i)
{
for (int j = 0; j < t; ++ j)
{
if(is[i][j] && putted[j] > 1 && maxx < taken[i])
{
maxx = taken[i];
maxi = i;
maxj = j;
}
else if(maxx == taken[i] && putted[j] < putted[i])
{
maxx = taken[i];
maxi = i;
maxj = j;
}
}
}
is[maxi][maxj] --;
taken[maxi] --;
putted[maxj] --;
all --;
}
int ans = 0;
for (int i = 0; i < a+b; ++ i)
ans = max(ans, taken[i]);
return ans;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
4444 KB |
Output is correct |
2 |
Correct |
1 ms |
4440 KB |
Output is correct |
3 |
Correct |
1 ms |
4444 KB |
Output is correct |
4 |
Correct |
1 ms |
4444 KB |
Output is correct |
5 |
Correct |
1 ms |
4444 KB |
Output is correct |
6 |
Correct |
1 ms |
4440 KB |
Output is correct |
7 |
Correct |
1 ms |
4444 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
4440 KB |
Output is correct |
2 |
Correct |
1 ms |
4444 KB |
Output is correct |
3 |
Correct |
1 ms |
4444 KB |
Output is correct |
4 |
Incorrect |
123 ms |
12912 KB |
Output isn't correct |
5 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
12636 KB |
Output is correct |
2 |
Correct |
2 ms |
12636 KB |
Output is correct |
3 |
Correct |
1 ms |
4444 KB |
Output is correct |
4 |
Correct |
1 ms |
4444 KB |
Output is correct |
5 |
Correct |
1 ms |
4444 KB |
Output is correct |
6 |
Correct |
1 ms |
4444 KB |
Output is correct |
7 |
Correct |
1 ms |
4444 KB |
Output is correct |
8 |
Correct |
1 ms |
4444 KB |
Output is correct |
9 |
Correct |
1 ms |
4444 KB |
Output is correct |
10 |
Correct |
2 ms |
12636 KB |
Output is correct |
11 |
Incorrect |
6 ms |
12636 KB |
Output isn't correct |
12 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
12636 KB |
Output is correct |
2 |
Correct |
2 ms |
12636 KB |
Output is correct |
3 |
Correct |
1 ms |
4444 KB |
Output is correct |
4 |
Correct |
1 ms |
4444 KB |
Output is correct |
5 |
Correct |
1 ms |
4444 KB |
Output is correct |
6 |
Correct |
1 ms |
4444 KB |
Output is correct |
7 |
Correct |
1 ms |
4440 KB |
Output is correct |
8 |
Correct |
1 ms |
4548 KB |
Output is correct |
9 |
Correct |
1 ms |
4444 KB |
Output is correct |
10 |
Correct |
2 ms |
12632 KB |
Output is correct |
11 |
Incorrect |
9 ms |
12756 KB |
Output isn't correct |
12 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
12632 KB |
Output is correct |
2 |
Correct |
2 ms |
12636 KB |
Output is correct |
3 |
Correct |
1 ms |
4444 KB |
Output is correct |
4 |
Correct |
1 ms |
4444 KB |
Output is correct |
5 |
Correct |
1 ms |
4444 KB |
Output is correct |
6 |
Correct |
1 ms |
4444 KB |
Output is correct |
7 |
Correct |
1 ms |
4444 KB |
Output is correct |
8 |
Correct |
2 ms |
4444 KB |
Output is correct |
9 |
Correct |
1 ms |
4444 KB |
Output is correct |
10 |
Incorrect |
125 ms |
12896 KB |
Output isn't correct |
11 |
Halted |
0 ms |
0 KB |
- |