# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
974611 |
2024-05-03T14:15:11 Z |
HoriaHaivas |
ICC (CEOI16_icc) |
C++14 |
|
100 ms |
856 KB |
/*
"care a facut teste cu Lattice reduction attack e ciudat"
"linistiti va putin"
- 2023 -
*/
#include<bits/stdc++.h>
#include "icc.h"
#define debug(x) cerr << #x << " " << x << "\n"
#define debugs(x) cerr << #x << " " << x << " "
#pragma GCC optimize("Ofast")
using namespace std;
int n;
int root[105];
int sz[105];
int comp[105][105];
bool connected[105][105];
int aquery[105];
int aqsz;
int bquery[105];
int bqsz;
int c[105];
int d[105];
bool seen[105];
void unite(int a, int b)
{
a=root[a];
b=root[b];
if (a==b)
return;
if(sz[a]<sz[b])
{
swap(a,b);
}
int i;
for (i=0; i<sz[b]; i++)
{
comp[a][sz[a]]=comp[b][i];
sz[a]++;
root[comp[b][i]]=a;
}
}
/*
int query(int sza, int szb, int a[], int b[])
{
int i,j;
for (i=0; i<sza; i++)
{
for (j=0; j<szb; j++)
{
if (connected[a[i]][b[j]])
{
return 1;
}
}
}
return 0;
}
*/
void add(int type, int &sza, int b[], int szb)
{
int i;
if (type==1)
{
for (i=0; i<szb; i++)
{
c[sza]=b[i];
sza++;
}
}
else if (type==2)
{
for (i=0; i<szb; i++)
{
aquery[sza]=b[i];
sza++;
}
}
else if (type==3)
{
for (i=0; i<szb; i++)
{
bquery[sza]=b[i];
sza++;
}
}
}
bool compara(int j)
{
int i;
for (i=1; i<=n; i++)
{
seen[i]=0;
}
int x,rando;
for (i=n; i>=1; i--)
{
x=root[i];
if (!seen[x])
{
if (i&(1<<j))
add(2,aqsz,comp[x],sz[x]);
else
add(3,bqsz,comp[x],sz[x]);
seen[x]=1;
}
}
/*
debugs(j);
debugs(aqsz);
debug(bqsz);
for (i=0;i<aqsz;i++)
{
debug(aquery[i]);
}
for (i=0;i<bqsz;i++)
{
debug(bquery[i]);
}
*/
return query(aqsz,bqsz,aquery,bquery);
}
pair<int,int> find_road()
{
int i,j;
for (i=0; i<=6 && (1<<i)<=n; i++)
{
aqsz=0;
bqsz=0;
//debugs(i);
//debug(compara(i));
if (compara(i)==1)
{
break;
}
}
int r,pas,apoz,bpoz,csize;
r=0;
pas=(1<<6);
while (pas)
{
if (r+pas<aqsz)
{
csize=0;
add(1,csize,aquery,r+pas);
if (!query(r+pas,bqsz,c,bquery))
r+=pas;
}
pas=pas/2;
}
apoz=aquery[r];
d[0]=apoz;
r=0;
pas=(1<<6);
while (pas)
{
if (r+pas<bqsz)
{
csize=0;
add(1,csize,bquery,r+pas);
if (!query(r+pas,1,c,d))
r+=pas;
}
pas=pas/2;
}
bpoz=bquery[r];
return {apoz,bpoz};
}
/*
void build_road()
{
int a,b;
cin >> a >> b;
connected[a][b]=1;
connected[b][a]=1;
}
void setroad(int a, int b)
{
cout << "am gasit lol : ";
cout << a << " " << b << "\n";
//unite(a,b);
}
*/
void run(int _n)
{
n=_n;
int pasi,i;
pair<int,int> ans;
for (i=1; i<=n; i++)
{
root[i]=i;
comp[i][0]=i;
sz[i]=1;
}
pasi=0;
while (pasi<n-1)
{
//build_road();///asta trebuie comentat
ans=find_road();
setRoad(ans.first,ans.second);
unite(ans.first,ans.second);
pasi++;
}
}
/*
signed main()
{
//ifstream fin("secvp.in");
//ofstream fout("secvp.out");
//ios_base::sync_with_stdio(0);
//cin.tie(0);
//cout.tie(0);
int en;
cin >> en;
run(en);
}
*/
Compilation message
icc.cpp: In function 'bool compara(int)':
icc.cpp:100:11: warning: unused variable 'rando' [-Wunused-variable]
100 | int x,rando;
| ^~~~~
icc.cpp: In function 'std::pair<int, int> find_road()':
icc.cpp:131:11: warning: unused variable 'j' [-Wunused-variable]
131 | int i,j;
| ^
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
4 ms |
600 KB |
Ok! 93 queries used. |
2 |
Correct |
4 ms |
604 KB |
Ok! 100 queries used. |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
22 ms |
604 KB |
Ok! 576 queries used. |
2 |
Correct |
25 ms |
604 KB |
Ok! 639 queries used. |
3 |
Correct |
26 ms |
604 KB |
Ok! 660 queries used. |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
68 ms |
600 KB |
Ok! 1387 queries used. |
2 |
Correct |
74 ms |
600 KB |
Ok! 1541 queries used. |
3 |
Correct |
69 ms |
652 KB |
Ok! 1417 queries used. |
4 |
Correct |
76 ms |
600 KB |
Ok! 1540 queries used. |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
83 ms |
604 KB |
Ok! 1494 queries used. |
2 |
Correct |
74 ms |
672 KB |
Ok! 1517 queries used. |
3 |
Correct |
81 ms |
604 KB |
Ok! 1614 queries used. |
4 |
Correct |
68 ms |
604 KB |
Ok! 1378 queries used. |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
78 ms |
652 KB |
Ok! 1603 queries used. |
2 |
Correct |
79 ms |
652 KB |
Ok! 1626 queries used. |
3 |
Correct |
78 ms |
604 KB |
Ok! 1629 queries used. |
4 |
Correct |
79 ms |
652 KB |
Ok! 1546 queries used. |
5 |
Correct |
73 ms |
652 KB |
Ok! 1458 queries used. |
6 |
Correct |
81 ms |
604 KB |
Ok! 1558 queries used. |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
78 ms |
604 KB |
Ok! 1602 queries used. |
2 |
Correct |
100 ms |
856 KB |
Ok! 1565 queries used. |