Skip to content

Commit d75d430

Browse files
committed
SPOJ
0 parents  commit d75d430

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+3341
-0
lines changed

ABCDEF-22988862-src.cpp

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#include <iostream>
2+
#include <unordered_map>
3+
#include <algorithm>
4+
#define lli long long int
5+
using namespace std;
6+
unordered_map <int,int> umap[2];
7+
int main()
8+
{
9+
int n;
10+
cin>>n; int num[n]; lli ans=0;
11+
for(int i=0;i<n;i++) cin>>num[i];
12+
for(auto i:num) for(auto j:num) for(auto k:num) { if(umap[0].count(i*j+k))umap[0][i*j+k] += 1; else umap[0][i*j+k]=1; }
13+
for(auto i:num) for(auto j:num) for(auto k:num) if(i) { if(umap[1].count(i*(j+k))) umap[1][i*(j+k)] += 1; else umap[1][i*(j+k)]=1; }
14+
for(auto v:umap[0]) ans += (umap[1].count(v.first))?(1LL*umap[1][v.first])*v.second:0;
15+
cout<<ans<<endl;
16+
return 0;
17+
}

ADAMATCH-23191304-src.cpp

+86
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
using cd = complex<double>;
4+
#define pb push_back
5+
#define nfs_mw ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
6+
double PI = acos(-1);
7+
int next_pow2(int no) { for(int i=0;i<6;i++) no |= no>>(1<<i); return (no+1); }
8+
9+
void fft(vector<cd>& pol, int inv = 1)
10+
{
11+
int n = pol.size(),i,j,l,jump,ang;
12+
if(n==1) return;
13+
14+
cd w[n]={cd(1.0,0.0)}, w1 = cd(cos((2*PI*inv)/n),sin((2*PI*inv)/n));
15+
for(i=1; i<n; i++) w[i] = w[i-1]*w1;
16+
17+
for (i=1, j=0; i<n; i++) {
18+
int bit = n >> 1;
19+
for (; j&bit; bit>>=1)
20+
j ^= bit;
21+
j ^= bit;
22+
23+
if (i < j)
24+
swap(pol[i], pol[j]);
25+
}
26+
27+
for(l=2; l<=n; l = l<<1)//length of merged block
28+
for(i=0; i<n; i += l)//iterate over the blocks
29+
for(j=0,ang=0,jump=n/l; j<l/2; j++,ang += jump)//form each block
30+
{
31+
cd& u = pol[i+j]; cd& v = pol[i+j+l/2]; cd mul = w[ang];
32+
tie(u,v) = make_tuple(u + mul*v, u - mul*v);
33+
}
34+
35+
return;
36+
}
37+
38+
void print(vector<cd> poly)
39+
{
40+
for(int i=0; i<poly.size(); i++) cout<<((int)round(poly[i].real()))<<" "; cout<<"\n";
41+
}
42+
43+
vector<cd> polymul(vector<cd> a, vector<cd> b)
44+
{
45+
int n = next_pow2( a.size() + b.size() - 1 ),i;
46+
a.resize(n,cd(0.0, 0.0)); b.resize(n,cd(0.0, 0.0));
47+
fft(a);
48+
fft(b);
49+
50+
vector <cd> fab;
51+
transform(a.begin(), a.end(), b.begin(), back_inserter(fab), multiplies<cd>());
52+
53+
fft(fab,-1);
54+
for(i=0; i<n; i++) fab[i] /= n;
55+
return fab;
56+
}
57+
58+
int main()
59+
{
60+
// nfs_mw
61+
int i,j,maxm = 0,l,c,lr;
62+
string s,r;
63+
cin>>s>>r; l=s.length(); lr=r.length();
64+
int ref[100]={}; ref['A'] = 0; ref['G'] = 1; ref['C'] = 2; ref['T'] = 3;
65+
vector <cd> pol[4][3];
66+
for(i=0; i<4; i++) { pol[i][0].resize(l,cd(0.0,0.0)); pol[i][1].resize(lr,cd(0.0,0.0)); }
67+
for(i=0; i<l; i++) {
68+
c = ref[(int)s[i]];
69+
pol[c][0][i] = cd(1.0,0.0);
70+
}
71+
for(i=0;i<lr;i++){
72+
c = ref[r[i]];
73+
pol[c][1][lr-1-i] = cd(1.0,0.0);
74+
}
75+
76+
for(i=0;i<4;i++){
77+
pol[i][2] = polymul(pol[i][0],pol[i][1]);
78+
}
79+
80+
for(i=0; i<=l-lr; i++){
81+
int tmp=0;
82+
for(j=0;j<4;j++) tmp += (pol[j][2].size()>(i+lr-1))?(round(pol[j][2][i+lr-1].real())):0;
83+
maxm = max(tmp,maxm);
84+
}
85+
cout<<(lr-maxm)<<"\n";
86+
}

AFS-21739164-src.cpp

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#include <iostream>
2+
#include <cstring>
3+
#include <cmath>
4+
#define l 1000001
5+
using namespace std;
6+
long int bin_expo(int b, int e)
7+
{
8+
long int out=1,tmp=b;
9+
while(e)
10+
{
11+
if(e&1) out*=tmp;
12+
tmp*=tmp;
13+
e>>=1;
14+
}
15+
return out;
16+
}
17+
int main()
18+
{
19+
long int tmp,i,j,t,n,t2,cter=0;
20+
long int *answer=new long int[l];
21+
long int *div=new long int[l];
22+
memset(answer, 0, l*sizeof(int));
23+
memset(div,0,l*sizeof(int));
24+
div[1]=1;
25+
for(i=2;i<=1000;i++)
26+
{
27+
if(!div[i])
28+
{
29+
div[i]=i;
30+
for(j=i*i;j<l;j+=i)div[j]=i;
31+
}
32+
}
33+
for(;i<l;i++)if(!div[i])div[i]=i;
34+
35+
36+
for(i=2;i<l;i++)
37+
{
38+
j=i;
39+
tmp=1;
40+
while(j>1)
41+
{
42+
t2=div[j];
43+
cter=0;
44+
while(!(j%t2))
45+
{
46+
cter++;
47+
j/=t2;
48+
}
49+
tmp=tmp*((bin_expo(t2,cter+1)-1)/(t2-1));
50+
}
51+
answer[i]=answer[i-1]-i+tmp;
52+
}
53+
54+
cin>>t;
55+
while(t--)
56+
{
57+
cin>>n;
58+
cout<<answer[n]<<"\n";
59+
}
60+
return 0;
61+
}

AGGRCOW-21042195-src.cpp

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#include <iostream>
2+
#include<algorithm>
3+
using namespace std;
4+
int *s,n;
5+
6+
//int give()
7+
8+
bool okay(int o,int c)
9+
{
10+
int i=-o,l=0,u=n-1;
11+
while(c--)
12+
{
13+
//cout<<c<<":\n";
14+
u=n-1;
15+
while(l<=u)
16+
{
17+
int m=(l+u)/2;
18+
if(s[m]-i==o) {l=m;break;}
19+
else if(s[m]-i>o) u=m-1;
20+
else l=m+1;
21+
}
22+
i=s[l];
23+
//cout<<s[l]<<"\n";
24+
if(l>=n)break;
25+
}
26+
//cout<<"\n";
27+
if(c>=0)return false;
28+
return true;
29+
}
30+
31+
int main()
32+
{
33+
int t,l,u,c; cin>>t;
34+
while(t--)
35+
{
36+
cin>>n>>c; s = new int[n];
37+
for(int i=0;i<n;i++) scanf("%d",&s[i]);
38+
sort(s,s+n);
39+
l=0; u=s[n-1]-s[0];
40+
while(l<=u)
41+
{
42+
int m=(l+u)/2;
43+
if(okay(m,c)) l=m+1;
44+
else u=m-1;
45+
46+
}
47+
cout<<u<<"\n";
48+
49+
}
50+
//okay()
51+
}

ARBITRAG-23053543-src.cpp

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#include <iostream>
2+
#include <algorithm>
3+
#include <unordered_map>
4+
#include <utility>
5+
using namespace std;
6+
int main()
7+
{
8+
int cs = 1,i,j,k,n,m; string s,s1,s2; double exc;
9+
while(cin>>n, n){
10+
bool arbit=0;
11+
double dp[n][n] = {};
12+
unordered_map <string,int> curr;
13+
for(i=0;i<n;i++){
14+
cin>>s;
15+
curr.insert(make_pair(s,i));
16+
dp[i][i] = 1.0;
17+
}
18+
19+
cin>>m;
20+
for(i=0;i<m;i++){
21+
cin>>s1>>exc>>s2;
22+
dp[curr[s1]][curr[s2]] = exc;
23+
}
24+
25+
for(i=0;i<n;i++)
26+
for(j=0;j<n;j++)
27+
for(k=0;k<n;k++)
28+
dp[j][k] = max(dp[j][k],dp[j][i]*dp[i][k]);
29+
30+
for(i=0;i<n;i++)if(dp[i][i]>1){arbit = 1; break;}
31+
cout<<"Case "<<cs<<": "<<((arbit)?"Yes":"No")<<"\n";
32+
cs++;
33+
}
34+
}

BITMAP-22069578-src.cpp

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#include <iostream>
2+
#include <algorithm>
3+
#include <queue>
4+
#define lli long long int
5+
struct point { int x , y ; } ;
6+
using namespace std;
7+
bool valid(int i,int j, int n,int m)
8+
{ return (i>=0 && i<n && j>=0 && j<m); }
9+
int main()
10+
{
11+
int i,j,t,n,m;
12+
bool matrix[200][200];
13+
cin>>t;
14+
while(t--)
15+
{
16+
cin>>n>>m;
17+
char c;
18+
queue<point> bfs;
19+
point tmp;
20+
int answer[n][m];
21+
for(i=0;i<n;i++) for(j=0;j<m;j++)
22+
{
23+
cin>>c;
24+
matrix[i][j]=(c=='0')?false:true;
25+
answer[i][j]=400;
26+
if(matrix[i][j]){ bfs.push({i,j}); answer[i][j]=0; }
27+
}
28+
int d[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
29+
while(!bfs.empty())
30+
{
31+
tmp=bfs.front();
32+
for(i=0;i<4;i++)
33+
{
34+
point tmp2={tmp.x+d[i][0],tmp.y+d[i][1]};
35+
if( valid(tmp2.x,tmp2.y,n,m) && answer[tmp2.x][tmp2.y]==400 )
36+
{ answer[tmp2.x][tmp2.y] = answer[tmp.x][tmp.y]+1; bfs.push(tmp2); }
37+
}
38+
bfs.pop();
39+
}
40+
for(i=0;i<n;i++)
41+
{
42+
for(j=0;j<m;j++)cout<<answer[i][j]<<" ";
43+
cout<<"\n";
44+
}
45+
}
46+
}

BOTTOM-22133239-src.cpp

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#include <iostream>
2+
#include <algorithm>
3+
#include <vector>
4+
#include <cstring>
5+
#include<stack>
6+
using namespace std;
7+
vector<vector<int>> graph;
8+
vector<int> scc;
9+
stack<int> s;
10+
bool isp[10000]={};
11+
int back[10000]={},id[10000]={},timer=1;
12+
bool dfs(int i,vector<vector<int>> &graph)
13+
{
14+
bool faltu=0;
15+
id[i]=back[i]=timer++;
16+
s.push(i); isp[i]=1;
17+
for(int v:graph[i])
18+
{
19+
if(!id[v]) faltu|=dfs(v,graph);
20+
if(isp[v]) back[i]=min(back[i],back[v]);
21+
else faltu=1;
22+
}
23+
if(back[i]==id[i])
24+
{
25+
vector<int> temp;
26+
while(s.top()!=i){ temp.push_back(s.top()); isp[s.top()]=0; s.pop(); }//scc gound here
27+
isp[i]=0; s.pop(); temp.push_back(i);
28+
if(!faltu)scc.insert(scc.end(),temp.begin(),temp.end());
29+
}
30+
return faltu;
31+
}
32+
void reboot(int n)
33+
{
34+
memset(id,0,sizeof(id)); memset(back,0,sizeof(back)); memset(isp,0,sizeof(isp)); timer=1;
35+
graph.clear(); scc.clear();
36+
graph.resize(n+1);
37+
}
38+
int main()
39+
{
40+
int t,i,u,v,n,m;
41+
while(cin>>n && n)
42+
{
43+
reboot(n);
44+
cin>>m;
45+
while(m--){ cin>>u>>v; graph[u].push_back(v); }
46+
for(i=1;i<=n;i++)if(!id[i])dfs(i,graph);
47+
sort(scc.begin(),scc.end());
48+
for(int ans:scc)cout<<ans<<" ";
49+
cout<<"\n";
50+
}
51+
return 0;
52+
}

BYTESM2-22994940-src.cpp

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#include<iostream>
2+
#include<algorithm>
3+
#define IOS ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
4+
#define lli long long int
5+
int h,w,inp[101][101];
6+
int ref(int r,int c){
7+
return (r>=0 && r<h && c>=0 && c<w)?inp[r][c]:0;
8+
}
9+
using namespace std;
10+
int main()
11+
{
12+
IOS
13+
int i,j,t,ans;
14+
cin>>t;
15+
while(t--){
16+
ans=0;
17+
cin>>h>>w;
18+
for(i=0;i<h;i++) for(j=0;j<w;j++) cin>>inp[i][j];
19+
for(i=h-1;i>=0;i--) for(j=w-1;j>=0;j--) inp[i][j] += max({ref(i+1,j-1),ref(i+1,j),ref(i+1,j+1)});
20+
for(j=0;j<w;j++) ans = max(ans,inp[0][j]);
21+
cout<<ans<<endl;
22+
}
23+
}

0 commit comments

Comments
 (0)